
$(document).ready(function(){
		var multiq = {};
		var order  = 0;

		//проверка на то что tinymce загружен
		$('#fast_reply_form').submit(function(){
			return ! $('#fast-reply_textarea').hasClass('unloaded_editor');
		});

		$('.multiquote a').click(function(){
			$(this).parent().toggleClass('selected');

			var post_id = this.id.substr(7);

			if (multiq[post_id]) {
				delete multiq[post_id];
			} else {
				multiq[post_id] = ++order;
			}
			return false;
		});

		// ответ с мультицитированием
		$('.btn_reply').click(function(){
			var values = [], revert = {};

			for(var k in multiq){
				var val = multiq[k];
				revert[val] = k;
				values.push(val);
			}//end for

			values = values.sort();

			var form_re=$('#form_reply');

			for(var i=0; i<values.length; ++i){
				var k = values[i];
				form_re.append('<input type="hidden" name="post_id" value="' + revert[k] + '"/>');
			}//end for

			form_re.submit();

			return false;
		});

		//ответ, расширенная форма
		$('.btn_reply_ext').click(function(){
			var form_re=$('#fast_reply_form');

			form_re.attr('action', $('#form_reply').attr('action'));

			//for submit work
			if ($('#fast-reply_textarea').hasClass('unloaded_editor')){
				$('#fast-reply_textarea').removeClass('unloaded_editor');
				$('#fast-reply_textarea').val('');
			}

			return true;
		});

		// ответ с цитированием одного сообщения
		$('.btn_reply_one').click(function(){
			var parent_id = $(this).attr('name').substr(6);

			$('#form_reply').append('<input type="hidden" name="parent_id" value="' + parent_id + '"/>');
			$('#form_reply').submit();

			return false;
		});

		// голосовалка за пост
		function vote_refresh(rsp, span){
			if (rsp == null || rsp.err_code != 0)
				return;

			span.text((rsp.vote_total > 0 ? '+' : '') + rsp.vote_total);

			if (rsp.vote_total > 0) {
				span.removeClass('negative').removeClass('zero').addClass('positive');
			} else if (rsp.vote_total < 0) {
				span.addClass('negative').removeClass('zero').removeClass('positive');
			} else {
				span.removeClass('negative').addClass('zero').removeClass('positive');
			}// end if
		}

		$('.rep_up').click(function(){
			var post_id = $(this).attr('name').substr(10);

			$(this).unbind();
			var span = $(this).parents('.rep_bar').find('.reputation');
			$(this).parent().parent().empty();

			$.post('/cgi-bin/iForum/vote/post_plus/', {'object_id': post_id}, function(rsp){
				vote_refresh(rsp, span);
			}, "json");

			return false;
		});

		$('.rep_down').click(function(){
			var post_id = $(this).attr('name').substr(10);

			$(this).unbind();
			var span = $(this).parents('.rep_bar').find('.reputation');
			$(this).parent().parent().empty();

			$.post('/cgi-bin/iForum/vote/post_minus/', {'object_id': post_id}, function(rsp){
				vote_refresh(rsp, span);
			}, "json");

			return false;
		});

		//создать опрос в теме
		$('.btn_poll_create').click(function(){
			var url = $(this).attr('href');

			if (url.length == 0)
				return false;

			$.get(url, function(rsp){
					if (rsp == null)
						return;

					$('#poll_block').replaceWith(rsp);
				});

			return false;
		});

		// stub
		function moder_stub(){
			return false;
		}

		// редактировать свои посты могут сами пользователи в течении 10 минут
		$('.post_block').each(function(){
			var post_id = this.id.substr(8);

			// клик по якорю
			$(this).find('.btn_bookmark').click(function(){
				prompt('Ссылка на сообщение', window.location.toString().replace(/[\?#].*$/, '') + '?link_to=' + post_id);

				return false;
			});

			// фильтр по оценкам, показать спрятанный пост
			$(this).find('.btn_show_filtered').click(function(){
				$(this).parent().hide();
				$(this).parent().next('.post_wrap').show();
				return false;
			});

			// редактирование поста
			$(this).find('.post_edit a').click(function startEdit(){
				var btn_moder = $(this);
				btn_moder.unbind().click(moder_stub);

				$.get('/cgi-bin/iForum/moder/post_edit/', {'post_id': post_id}, function(rsp){
						if (rsp == null)
							return;

						var entry = $('#post_id_' + post_id);
						var clone = entry.find('.entry-content').html();

						entry.find('.entry-content').html(rsp);

						// отмена редактирования
						entry.find('.cancel').click(function(){
							entry.find('.entry-content').html(clone);
							btn_moder.unbind().click(startEdit);

							var editor = tinymce.get('editor_' + post_id);
							tinymce.remove(editor);

							return false;
						});

						// сохранить редактирование
						entry.find('.btn_save_edit').click(function(){
							btn_moder.unbind().click(startEdit);

							var editor     = tinymce.get('editor_' + post_id);

							var post_src   = editor.getContent();
							var reason_txt = entry.find('.edt_post_reason').val();
							var add_edit   = entry.find('.check_add_edit').attr('checked') ? 1 : 0;

							tinymce.remove(editor);

							$.post(
								'/cgi-bin/iForum/moder/post_edit/',
								{
									'post_id'    : post_id,
									'post_src'   : post_src,
									'reason_txt' : reason_txt,
									'add_edit'   : add_edit
								},
								function(rsp){
									if (rsp == null){
										alert('Ошибка изменения поста');
										return;
									}//end if

									entry.find('.entry-content').empty().html(rsp);
									btn_moder.unbind().click(startEdit);
								});

							return false;
						});
					});

				return false;
			});
		});//end each

		//moderate features
		$('.post_block').each(function(){
			var post_id = this.id.substr(8);

			// показать/скрыть пост
			$(this).find('.post_hide a, .post_show a').click(function(){
				var active = $(this).parent().attr('class') == 'post_show' ? 1 : 0;
				var href   = $(this);

				$.post(
					'/cgi-bin/iForum/moder/post_set_active/',
					{'post_id': post_id, 'active': active},
					function(rsp){
						if (rsp == null || rsp.err_code != 0){
							alert('Невозможно показать/скрыть пост');
							return;
						}//end if

						if (active == 0){
							$('#post_id_' + post_id).addClass('moderated');
							href.parent().removeClass('post_hide');
							href.parent().addClass('post_show');
							href.find('span').html('Показать');
							href.find('img').attr('src', '/images/forum/accept.png');
						} else {
							$('#post_id_' + post_id).removeClass('moderated');
							href.parent().removeClass('post_show');
							href.parent().addClass('post_hide');
							href.find('span').html('Скрыть');
							href.find('img').attr('src', '/images/forum/delete.png');
						}//end_if
					}, "json");

				return false;
			});

			// post delete
			$(this).find('.post_del a').click(function() {
				$('#rm_post_id').val(post_id);

				$("#dialog-form").dialog("option", "title", 'Удаление поста').dialog("open");
				return false;
			});

			// user warn
			$(this).find('.btn_user_warn').click(function() {
				var nick = $(this).attr('name');
				$("#warn_post_id").val(post_id);

				$("#dialog-warn").dialog("option", "title", 'Предупреждение для пользователя "' + nick + '"').dialog("open");
				return false;
			});

			// user ban
			$(this).find('.btn_user_ban').click(function() {
				var nick = $(this).attr('name');
				$("#ban_post_id").val(post_id);

				$("#dialog-ban").dialog("option", "title", 'Бан пользователя "' + nick + '"').dialog("open");
				return false;
			});
		});//end each

		$('#ban_date').datepicker({
			dateFormat:'dd-mm-yy',
			showButtonPanel: true,
			changeMonth: true,
			changeYear: true
		});

		// ui dialog for delete post feature
		$( "#dialog:ui-dialog" ).dialog( "destroy" );

		var reason_txt       = $( "#reason_txt" ),
			reason_txt_warn  = $( "#reason_txt_warn" ),
			reason_txt_ban   = $( "#reason_txt_ban" ),
			rm_post_id   = $( "#rm_post_id" ),
			warn_post_id = $( "#warn_post_id" ),
			ban_post_id  = $( "#ban_post_id" ),
			del_all_user_msg = $( "#del_all_user_msg" ),
			ban_unlim = $( "#ban_unlim" ),
			allFields    = $( [] ).add( warn_post_id ).add( reason_txt_warn )
				.add( reason_txt ).add( rm_post_id ).add( ban_post_id ).add( reason_txt_ban )
				.add( del_all_user_msg ).add( ban_unlim );

		// диалог для бана пользователя
		$( "#dialog-ban" ).dialog({
			autoOpen: false,
			height: 395,
			width: 525,
			modal: true,
			buttons: {
				"Сохранить": function() {
					var dialog      = $(this);
					var post_id     = ban_post_id.val();
					var ban_date    = $( "#ban_date" ).val();
					var autoban_on  = $( "#autoban_on" ).attr('checked')  ? 1 : 0;
					var autoban_off = $( "#autoban_off" ).attr('checked') ? 1 : 0;
					var ban_unlim   = $( "#ban_unlim" ).attr('checked') ? 1 : 0;

					var del_all_user_msg = $( "#del_all_user_msg" ).attr('checked') ? 1 : 0;
					var unban       = $( "#unban" ).attr('checked') ? 1 : 0;

					if (! reason_txt_ban.val()){
						alert('Укажите причину бана');
						return false;
					}//end if

					$.post(
						'/cgi-bin/iForum/moder/user_ban/',
						{
							'post_id'     : post_id,
							'reason_txt'  : reason_txt_ban.val(),
							'ban_date'    : ban_date,
							'autoban_on'  : autoban_on,
							'autoban_off' : autoban_off,
							'ban_unlim'   : ban_unlim,
							'del_all_user_msg'  : del_all_user_msg,
							'unban'       : unban
						},
						function(rsp){
							if (rsp == null || rsp.err_code != 0){
								alert('Ошибка управления баном пользователя');
								return;
							}//end if

							dialog.dialog( "close" );

							$('#user_ban_' + post_id).html('<strong class="warn_link">Бан выполнен</strong>');
						}, "json");
				},//end save user warn

				"Отмена": function() {
					$(this).dialog( "close" );
				}
			},

			close: function() {
				allFields.val("");
			}
		});//end dialog

		// диалог для предупреждения пользователя
		$( "#dialog-warn" ).dialog({
			autoOpen: false,
			height: 185,
			width: 520,
			modal: true,
			buttons: {
				"Сохранить": function() {
					var dialog  = $(this);
					var post_id = warn_post_id.val();

					if (! reason_txt_warn.val()){
						alert('Укажите причину предупреждения!');
						return false;
					}//end if

					$.post(
						'/cgi-bin/iForum/moder/user_warn/',
						{'post_id': post_id, 'reason_txt': reason_txt_warn.val()},
						function(rsp){
							if (rsp == null || rsp.err_code != 0){
								alert('Ошибка предупреждения пользователя');
								return;
							}//end if

							dialog.dialog( "close" );

							$('#user_warn_' + post_id).html('<strong class="warn_link">Предупреждение выполнено</strong>');
						}, "json");
				},//end save user warn

				"Отмена": function() {
					$(this).dialog( "close" );
				}
			},

			close: function() {
				allFields.val("");
			}
		});//end dialog

		// диалог для удаления миссаг
		$( "#dialog-form" ).dialog({
			autoOpen: false,
			height: 245,
			width: 520,
			modal: true,
			buttons: {
				"Удалить": function() {
					var dialog  = $(this);
					var post_id = rm_post_id.val();
					var is_spam = $('#rm_as_spam').attr('checked');

					if (! reason_txt.val()){
						alert('Укажите причину для удаления!');
						return false;
					}//end if

					$.post(
						'/cgi-bin/iForum/moder/post_delete/',
						{'post_id': post_id, 'is_spam': is_spam ? 1 : 0, 'reason_txt': reason_txt.val()},
						function(rsp){
							if (rsp == null || rsp.err_code != 0){
								alert('Ошибка удаления поста');
								return;
							}//end if

							dialog.dialog( "close" );

							if ($('#rm_as_spam').attr('checked')){
								window.location.reload(true);
							} else {
								$('#post_id_' + post_id).remove();

								if ($('.post_block').length == 0)
									window.location.reload(true);
							}//end if
						}, "json");
				},//end rm btn

				"Отмена": function() {
					$(this).dialog( "close" );
				}
			},

			close: function() {
				allFields.val("");

				$('#rm_as_spam').removeAttr("checked");
			}
		});//end dialog

		// check one post for moder
		$('.input_check_moder').change(function(){
			var count = $('.input_check_moder:checked').length;

			var obj = $('#btn_check');

			if (count > 0)
				obj.removeAttr('disabled');
			else
				obj.attr('disabled', 'disabled');

			obj.val('С отмеченными сообщениями (' + count + ')');

			return false;
		});

		// модерилка для темы
		$('#moder_topic_feature').submit(function(){
			var moder_func = $('#topic_moderation').val();
			var topic_id   = $('#moder_topic_id').val();

			var moder_strategy = {
				'topic_down'  : {
					'url'     : '/cgi-bin/iForum/moder/topic_set_pinned/',
					'params'  : {'pinned': 0},
					'err_msg' : 'Ошибка открепления темы'
				},

				'topic_up'    : {
					'url'     : '/cgi-bin/iForum/moder/topic_set_pinned/',
					'params'  : {'pinned': 1},
					'err_msg' : 'Ошибка прикрепления темы'
				},

				'topic_open'  : {
					'url'     : '/cgi-bin/iForum/moder/topic_set_status/',
					'params'  : {'status': 'open'},
					'err_msg' : 'Ошибка открытия темы'
				},

				'topic_close' : {
					'url'     : '/cgi-bin/iForum/moder/topic_set_status/',
					'params'  : {'status': 'closed'},
					'err_msg' : 'Ошибка закрытия темы'
				},

				'topic_approve' : {
					'url'     : '/cgi-bin/iForum/moder/topic_set_active/',
					'params'  : {'active': 1},
					'err_msg' : 'Ошибка активации темы'
				},

				'topic_unapprove' : {
					'url'     : '/cgi-bin/iForum/moder/topic_set_active/',
					'params'  : {'active': 0},
					'err_msg' : 'Ошибка деактивации темы'
				},

				'publish_unapproved' : {
					'url'     : '/cgi-bin/iForum/moder/topic_unapproved/',
					'params'  : {'active': 1},
					'err_msg' : 'Ошибка активации сообщений в теме'
				},

				'unpublish_unapproved' : {
					'url'     : '/cgi-bin/iForum/moder/topic_unapproved/',
					'params'  : {'active': 0},
					'err_msg' : 'Ошибка деактивации сообщений в теме'
				},

				'topic_unsubscribe' : {
					'url'     : '/cgi-bin/iForum/moder/topic_unsubscribe_all_users/',
					'params'  : {},
					'err_msg' : 'Ошибка отписки от темы'
				}
			};

			if (moder_func == 'move_to'){
				$(this).attr('action', '/cgi-bin/iForum/moder/all_topic/');

				return true;
			}//end for move func

			if (moder_func == 'topic_edit'){
				$(this).attr('action', '/cgi-bin/iForum/moder/topic_edit_ext/');

				return true;
			}//end for edit func

			if (! moder_strategy[moder_func]){
				alert('Ошибка модерации темы (действие не определено)');

				return false;
			}//end if

			var strategy = moder_strategy[moder_func];

			strategy['params']['topic_id'] = topic_id;

			$.post(strategy['url'], strategy['params'],
				function(rsp){
					if (rsp == null || rsp.err_code != 0){
						alert(strategy['err_msg']);
						return;
					}//end if

					window.location.reload(true);
				},
				"json");

			//topic_delete
			//topic_unsubscribe

			return false;
		});
	});//end document ready
